#pragma once

#include <iostream>
#include <semaphore.h>
namespace SemModule
{
	int initialize = 1;
	class Sem
	{
	public:
		Sem(int init = initialize):_init_value(init)
		{
			int n = sem_init(&_sem,0,_init_value);
		}
		void P()
		{
			int n = sem_wait(&_sem);
		}
		void V()
		{
			int n = sem_post(&_sem);
		}
		~Sem()
		{
			int n = sem_destroy(&_sem);
		}
	private:
		sem_t _sem;
		int _init_value;
	};
}